Skip to content
2026-09-29 04:20872 字AIRAGQuery改写

RAG Query 改写 ​

RAG 流程的第一步通常是对用户 Query 进行改写。用户提问方式与期望答案之间存在差距,改写有助于系统更准确地理解意图,提升召回精度。

信息不完整类改写 ​

历史会话改写 ​

多轮对话中前后文关联,仅凭当前 Query 会导致召回精度下降。需将上下文信息补全。

用户:「华为 meta70 手机的性能怎么样?」 系统:「……性能表现非常优秀」 用户:「摄像头方面具体改进了什么?」

改写前:摄像头方面具体改进了什么?改写后:华为 meta70 手机的摄像头相比 meta60 有哪些具体改进?

关键词扩写 ​

用户输入简短、缺乏上下文时,扩展为完整问句。

输入:机器学习实践 改写后:机器学习在实际应用中的案例有哪些?哪些工具和方法适用于机器学习实践?

伪答案改写 ​

在原始查询中加入假设性答案,增强语义丰富性,提升复杂问题检索能力。

输入:如何提高企业的市场竞争力? 改写后:如何提高企业的市场竞争力?比如通过创新产品、优化营销策略或提升客户服务等手段。

缩写词改写 ​

将缩写扩展为完整术语,匹配文档中的正式表达。

输入:VR技术在教育中的应用 改写后:虚拟现实(Virtual Reality)技术在教育中的应用有哪些?可以举一些实际的应用案例吗?

噪声问题类改写 ​

一般去噪 ​

去除无关修饰语、模糊表达、不相关背景,简化查询。

输入:我最近在准备面试,但对于算法的理解还不太够,能推荐一些有效的学习资源吗? 改写后:有哪些有效的学习资源可以帮助提高算法理解?

关键词改写 ​

提取核心关键词,去除停用词和多余描述,适配关键词检索(如 BM25)。

输入:关于Java中的线程池,常见的实现方式有哪些? 改写后:Java线程池常见实现方式

子查询拆分 ​

对比类查询可能产生信息干扰,拆分为多个独立查询,分别检索各实体特点。

输入:C++ 和 Go 哪个更适合做系统编程? 拆分后:

  • C++ 适合做系统编程的优点有哪些?
  • Go 适合做系统编程的优点有哪些?

实践建议 ​

  • 改写质量依赖 Prompt 设计和大模型能力
  • 可进行多次改写或拆分为多个独立查询提高召回
  • 结合 Reranking 重排序模型对召回结果精确排序
  • 示例 Prompt:

    您是查询扩展方面的专家。请通过同义词/短语、完整写出缩写、添加额外描述、改变表达方式、翻译等方式扩展用户问题,返回 5 个版本。 (内容由AI生成,仅供参考)

每一篇文章,都是时间的标本